package linkedList;

/**
 * 206. 反转链表
 *
 * 给你单链表的头节点 head ，请你反转链表，并返回反转后的链表。
 *
 * 链表中节点的数目范围是 [0, 5000]
 * -5000 <= Node.val <= 5000
 */

public class ReverseLinkedList_206 {
    public ListNode reverseList(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }

        // head的前一个指针
        ListNode prev = null;
        // 紧跟head指针
        ListNode current = head;
        int i = 0;
        while (head != null) {
            i++;
            // 三指针，不能在head指针还没到next之前就用current指针的next指向prev，这样会导致套娃
            head = head.next;
            current.next = prev;
            prev = current;
            current = head;
        }

        return prev;
    }
}
